package com.sodimac.v2s.commands
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.sodimac.util.alerts.alert;
	import com.sodimac.util.commons.UtilString;
	import com.sodimac.util.commons.UtilXml;
	import com.sodimac.v2s.business.SfpDelegate;
	import com.sodimac.v2s.events.cargarInfoSfpEvent;
	import com.sodimac.v2s.events.cargarProdPropuestosEvent;
	import com.sodimac.v2s.events.cargarProductosEvent;
	import com.sodimac.v2s.model.ComprasModelLocator;
	import com.sodimac.v2s.vo.InfoSfpVO;
	
	import mx.controls.DateField;
	import mx.rpc.IResponder;

	public class obtenerInfoSfpCommand implements ICommand, IResponder
	{
		private var modelo:ComprasModelLocator = ComprasModelLocator.getInstance();
		private var strMetodo:String;
		
		public function execute(event:CairngormEvent):void
		{
			var delegate:SfpDelegate = new SfpDelegate(this);
			var sfp:cargarInfoSfpEvent = cargarInfoSfpEvent(event);
			
			strMetodo = sfp.metodo;
			delegate.ConsultaPedidoPais(modelo.cabecera, sfp.idPais, sfp.idPedidoCorp, sfp.idEmpresa);
		}
		
		
		
    	public function result(obj: Object): void
        {            
			var xmlList:XMLList;
			var xml:XML = new XML(obj.result);
			xml = UtilXml.removeNamespacesFromXML(xml);
		 	xmlList = xml.children();
		 	
			var result:Number = Number(xmlList.cabecera.@id);
			var glosa:String =  xmlList.cabecera.@glosa;
			trace("WS ConsultaPedidoPais response id="+ result);

			switch (result){
			case 0:   //Ok
						var xmlSfp:XMLList = xmlList.payload.infoSfp;
						procesaSFP(xmlSfp, new XML(modelo.sesion.intMerchant));
						modelo.existePedido = "0";
						break;
						
	  	    case 1:   //Error
	  	      			alert.error("Ha ocurrido un error:\n\n"+  glosa);
	  	      			trace("pedido  no existe!!");
	  	      			modelo.existePedido = "1";
	  	      			break;
	  	      			
	  	    default:  //reintentar
	  	      	  	     alert.info("Problemas con respuesta del servicio, " + 
									"favor reintente mas tarde.\n\n"+ glosa);
	  	      			break;                 	      						
	  	    }


        }
                
        public function fault(obj: Object): void
        {
        	alert.error("Ha Ocurrido un Error al cargar Datos SFP.");
        }	 
				
		
		private function procesaSFP(sfpList:XMLList, imXml:XML):void 
		{
			
			//trace("__xml:\n" + imXml.toXMLString());
			
			if (strMetodo == "SolicitudFacturaProforma")
			{
				//obtener productos corporativos
				var prodCorpEvent:cargarProductosEvent = new cargarProductosEvent();
				prodCorpEvent.idPais = modelo.sesion.codIataPais;
				prodCorpEvent.idEmpresa = modelo.sesion.empresa;
				prodCorpEvent.idPedidoCorp = modelo.sesion.pedidoCorpId;
				prodCorpEvent.homologado = "S";
				prodCorpEvent.dispatch();
			}				
			
			if (strMetodo == "EmitirOrdenDeCompra")
			{
				//obtener productos propuestos
	 			var prodProEvent:cargarProdPropuestosEvent = new cargarProdPropuestosEvent();
				prodProEvent.metodo = "consultaProductosPropuestos";
				prodProEvent.idPais = modelo.sesion.codIataPais;
				prodProEvent.idEmpresa = modelo.sesion.empresa;
				prodProEvent.idPedidoCorp = modelo.sesion.pedidoCorpId;
				prodProEvent.dispatch();
			}


			for each(var data:XML in sfpList)			
			{
	            var tmpSfp:InfoSfpVO = new InfoSfpVO();
	            var strFecha:String ="";
	            var fecha:Date = new Date();     //get GMT
	            
				 tmpSfp.numeroSFP = data.sfp;
				 strFecha = UtilString.trimToNull(String(data.fecha));
				 strFecha = strFecha.substr(0,10);
				 fecha.date = Number(strFecha.substr(8,2));
				 fecha.month = Number(strFecha.substr(5,2))-1;
				 fecha.fullYear = Number(strFecha.substr(0,4));
	             tmpSfp.fecha = fecha;
	             tmpSfp.fecha_formato = DateField.dateToString(fecha, 'DD-MM-YYYY');  //para pantalla
	             tmpSfp.estado =  UtilString.isBlank(data.estado)? "RECEPCIONADO": data.estado; 
	             tmpSfp.numeroOC = data.numeroOC;
				 tmpSfp.version = UtilString.isBlank(data.version)? "1.0": data.version;
				 tmpSfp.merchantId = data.idIntMerchant;
				 tmpSfp.merchantNombre = imXml.row.(@id==String(tmpSfp.merchantId)).@apellidoNombre;
				 tmpSfp.proveedorId = data.idProveedor;
				 tmpSfp.proveedorNombre = data.proveedor;
				 tmpSfp.empresaId = data.idEmpresa;
				 
				 //datos para emitir OC
				 tmpSfp.sucursalId = Number(data.idSucursal);
				 tmpSfp.diasFechaEnvio = Number(data.diasFechaEnvio);
				 tmpSfp.diasFechaEmision = Number(data.diasFechaEmision);
				 tmpSfp.diasFechaRecepcion = Number(data.diasFechaRecepcion);
	
				 modelo.sfpData = tmpSfp;
			}
			
			
					
		}
	}
}	